# 类别标签的颜色配置
import numpy as np

color_map = {
    0: [163, 163, 163],  # '未知': 类别 0  灰色
    1: [153, 102, 0],  # '裸地': 类别 1  泥巴黄
    2: [102, 255, 153],  # '草地': 类别 2  清新绿
    3: [0, 102, 255],  # '构筑': 类别 3 蓝色
    4: [255, 255, 255],  # '道路': 类别 4 白色
    5: [0, 255, 0],  # '林地': 类别 5 深绿色
    6: [102, 255, 255],  # '水域': 类别 6 淡蓝
    7: [255, 255, 31],  # '耕地': 类别 7 黄色
    8: [255, 143, 31]  # '房屋': 类别 8 深黄色
}


def rgb_to_hex(rgb):
    # 确保数值在 0-255 范围内
    r = max(0, min(255, rgb[0]))
    g = max(0, min(255, rgb[1]))
    b = max(0, min(255, rgb[2]))
    # 转换为两位十六进制字符串（大写）
    return "#{:02X}{:02X}{:02X}".format(r, g, b)


def trans2color2list():
    color_list = []
    for key, value in color_map.items():
        color_list.append(value)
    one_list = [item for sublist in color_list for item in sublist]
    return one_list


if __name__ == '__main__':
    trans2color2list()


def label2color(lable):
    '''
    将单通道灰度label, 根据颜色配置转为三通道彩色
    '''
    # 将图像转换为 numpy 数组
    label_array = np.array(lable)
    # 创建彩色图像
    color_label_array = np.zeros((label_array.shape[0], label_array.shape[1], 3), dtype=np.uint8)

    # 将单通道标签映射为彩色图像
    for label_value, color in color_map.items():
        color_label_array[label_array == label_value] = color
    return color_label_array
